package com.kyl.dto;


import com.kyl.base.BaseDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @title DeptDto
 * @description 部门的Dto对象    DTO对象，是专门用来进行数据传输的对象。它和Entity对象的关系是部分属性一直，但在Entity对象的基础上增加或减少部分属性。
 * @author WanJl
 * @version 1.0
 * @create 2025/1/6
 */
@Data
@NoArgsConstructor
@ApiModel(value = "部门Dto对象", description = "用来接收前端传入的部门参数信息")
public class DeptDto extends BaseDto {
    /**
     * 上级部门编号
     * 用于记录当前部门的上级部门编号，以便于构建部门之间的层级关系
     */
    @ApiModelProperty(value = "父部门编号")
    private String parentDeptNo;

    /**
     * 部门编号
     * 唯一标识一个部门，用于在系统中区分不同的部门
     */
    @ApiModelProperty(value = "部门编号")
    private String deptNo;

    /**
     * 部门名称
     * 记录部门的名称，用于在系统中显示部门信息
     */
    @ApiModelProperty(value = "部门名称")
    private String deptName;

    /**
     * 排序编号
     * 用于指定部门在列表中的显示顺序，数值越小显示越靠前
     */
    @ApiModelProperty(value = "排序编号")
    private Integer sortNo;

    /**
     * 数据状态
     * 记录部门数据的状态，例如正常、删除等，用于数据管理
     */
    @ApiModelProperty(value = "数据状态")
    private String dataState;

    /**
     * 部门领导ID
     * 记录部门领导的用户ID，用于关联用户信息
     */
    @ApiModelProperty(value = "部门领导ID")
    private Long leaderId;

    /**
     * 部门级别
     * 默认值为4，表示部门在组织结构中的层级，用于层级管理和权限控制
     */
    @ApiModelProperty(value = "部门级别")
    private Integer level=4;

    @Builder
    public DeptDto(String parentDeptNo ,String deptNo, String deptName, Integer sortNo, String dataState, Long leaderId, Integer level) {
        this.parentDeptNo=parentDeptNo;
        this.deptNo = deptNo;
        this.deptName = deptName;
        this.sortNo = sortNo;
        this.dataState = dataState;
        this.leaderId = leaderId;
        this.level = level;
    }

    public String getParentDeptNo() {
        return parentDeptNo;
    }

    public String getDeptNo() {
        return deptNo;
    }

    public String getDeptName() {
        return deptName;
    }

    public Integer getSortNo() {
        return sortNo;
    }

    public String getDataState() {
        return dataState;
    }

    public Long getLeaderId() {
        return leaderId;
    }

    public Integer getLevel() {
        return level;
    }
}
